// Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`,
// then press Enter. You can now see whitespace characters in your code.
//编写程序数一下 1到 100 的所有整数中出现多少个数字9
//public class Main {
//    public static void main(String[] args) {
//        int i=0;
//        int num=0;
//        for ( i = 0; i <101 ; i++) {
//            if((i==9) || (i/10==9)){
//                num++;
//            }
//        }
//        System.out.println(num);
//    }
//}
//
//计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值    。
//public class Main {
//    public static void main(String[] args) {
//        double num = 1;
//        for (double i = 2; i < 101; i++) {
//            if(i%2 == 0){
//               num  -= (1/i);
//            }else{
//                num += 1/i;
//            }
//        }
//        System.out.println(num);
//    }
//}
//
//import java.util.Scanner;
//
////输出一个整数的每一位，如：123的每一位是3，2，1
//public class Main {
//    public static void main(String[] args) {
//        int i = 0;
//        Scanner sc = new Scanner(System.in);
//        i = sc.nextInt();
//        int k=i;
//        int num = 0;
//        while(k!=0){
//            k=k/10;
//            num++;
//        }
//        for (int j = 0; j < num; j++) {
//            int p = 0;
//            p = i%10;
//            System.out.println(p);
//            i/=10;
//        }
//    }
//}
//
//1.按顺序打印一个数字的每一位（例如1234，打印出1 2 3 4）递归
//
//public class Main {
//    public static void prin(int n){
//        if(n/10 == 0){
//            System.out.print(n+" ");
//        }else {
//            prin(n/10);
//            System.out.print(n%10+" ");
//        }
//    }
//
//    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        int n = sc.nextInt();
//        prin(n);
//    }
//}
//
//public class Main {
//    public static int max1(int x,int y){
//        if (x>y){
//            return x;
//        }else{
//            return y;
//        }
//    }
//
//    public static int max2(int x, int y, int z){
//        if (max1(x,y)>z){
//            return max1(x,y);
//        }else{
//            return z;
//        }
//    }
//
//    public static void main(String[] args) {
//    int a = 8;
//    int b = 6;
//    int c = 18;
//    int Max1=max1(a,b);
//    int Max2=max2(a,b,c);
//        System.out.println(Max1);
//        System.out.println(Max2);
//    }
//}
//
//求N的阶乘
//public class Main {
//    public static int my(int x){
//        if (x==1){
//            return 1;
//        }else{
//            return x*my(x-1);
//        }
//    }
//
//    public static void main(String[] args) {
//        System.out.println("请输入：");
//        int mun = 0;
//        Scanner sc = new Scanner(System.in);
//        int N = sc.nextInt();
//        for (int i = 1; i <= N; i++) {
//            int ret = my(i);
//            mun +=ret;
//        }
//        System.out.println(mun);
//    }
//}
//
// 在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码，求出结果
//public class Main {
//    public static int sum1(int x, int y){
//        return x+y;
//    }
//
//    public static double sum2(double x, double y){
//        return x+y;
//    }
//
//    public static void main(String[] args) {
//        int a = 1;
//        int b = 2;
//        double q = 3.5;
//        double e = 4.6;
//        int ret1 = sum1(a,b);
//        double ret2 = sum2(q,e);
//        System.out.println(ret1+" "+ret2);
//    }
//}
//
//
//实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 ,
// 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
//public class Main {
//    public static int[] transform(int[] arr){
//        for (int i = 0; i < arr.length; i++) {
//            arr[i] *= 2;
//        }
//        return arr;
//    }
//
//    public static void main(String[] args) {
//        int[] array1 = {1 , 2 , 3 , 4 , 5 , 6};
//        int [] array2 = transform(array1);
//        String newArr = Arrays.toString(array2);
//        System.out.println(newArr);
//
//    }
//}
//
//调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
//如数组：[1,2,3,4,5,6]
//调整后可能是：[1, 5, 3, 4, 2, 6]
//public class Main {
//
//    public static int[] change(int[] arr){
//        int[] arr2 = new int[6];
//        int left = 0;
//        int right = arr.length-1;
//        for (int i = 0; i < arr.length; i++) {
//            if (arr[i] % 2 == 0){
//                arr2[right] = arr[i];
//                right--;
//            }else{
//                arr2[left] = arr[i];
//                left++;
//            }
//        }
//        return arr2;
//    }
//
//    public static void main(String[] args) {
//        int[] array = {1 , 2 , 3 , 4 , 5 , 7};
//        int[] array2 = change(array);
//        String newArr = Arrays.toString(array2);
//        System.out.println(newArr);
//    }
//}
//
//给定一个整型数组, 实现冒泡排序(升序排序)
//public class Main {
//    public static int[] sort(int[] arr){
//        for (int i = 0; i < arr.length-1; i++) {
//            for (int j = 0; j < arr.length-1-i; j++) {
//                if(arr[j]>arr[j+1]){
//                    int ret = arr[j];
//                    arr[j] = arr[j+1];
//                    arr[j+1] = ret;
//                }
//            }
//        }
//        return arr;
//    }
//
//    public static void main(String[] args) {
//        int[] array = {3 , 8 , 6 , 9 , 0 , 5};
//        int[] arr = sort(array);
//        String newArr = Arrays.toString(arr);
//        System.out.println(newArr);
//    }
//}
//
//给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target 的那 两个 整数，并返回它们的数组下标。
//public class Main {
//    public static void main(String[] args) {
//        int[] array = {1 , 8 , 7 , 5 , 3 , 9};
//        Scanner sc = new Scanner(System.in);
//        int n = sc.nextInt();
//        for (int i = 0; i < array.length; i++) {
//            for (int j = 0; j < array.length; j++) {
//                if (i==j){
//                    break;
//                }else {
//                    if (array[i]+array[j] == n){
//                        System.out.println(i+","+j);
//                    }
//                }
//            }
//        }
//    }
//}
//
//给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
//public class Main {
//    public static void main(String[] args) {
//
//    }
//}
//
//
//public class Date {
//    public int year;
//    public int month;
//    public int day;
//
//    public Date(int year, int month, int day){
//        this.year=year;
//        this.month=month;
//        this.day=day;
//    }
//
//    public void printDate(){
//            System.out.println(year+"-"+month+"-"+day);
//    }
//
//
//public static void main(String[] args) {
//    Date d = new Date(2024 ,4 ,10);
//    d.printDate();
//}
//}
//
//public class Main {
//    public static void main(String[] args) {
//        {
//            int x = 10;
//            System.out.println("x1="+x);
//        }
//        int x = 100;
//        System.out.println("x2="+x);
//    }
//}
//
//import java.util.Scanner;
//
//public class Main {
//
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        while (scanner.hasNextInt()) {
//            int x = scanner.nextInt();
//            int y = scanner.nextInt();
//            Data data = new Data(x, y);
//            System.out.println(data.getX() + data.getY());
//        }
//    }
//
//}
//
//class Data {
//
//    private int x;
//    private int y;
//
//    public Data(int x, int y) {
//        this.x = x;
//        this.y = y;
//    }
//
//    int getX() {
//        return x;
//    }
//
//    int getY() {
//        return y;
//    }
//
//}
//
//
//class Test {
//    public static void hello() {
//        System.out.println("hello");
//    }
//}
//public class MyApplication {
//    public static void main(String[] args) {
//        // TODO Auto-generated method stub
//        Test test=null;
//        test.hello();
//    }
//}

//import java.util.Scanner;
//
//public class Main {
//
//    public static void main(String[] args) {
//        Scanner scanner = new Scanner(System.in);
//        while (scanner.hasNextInt()) {
//            int x = scanner.nextInt();
//            int y = scanner.nextInt();
//            int z = scanner.nextInt();
//            Sub sub = new Sub(x, y, z);
//            System.out.println(sub.calculate());
//        }
//    }
//
//}
//
//class Base {
//
//    private int x;
//    private int y;
//
//    public Base(int x, int y) {
//        this.x = x;
//        this.y = y;
//    }
//
//    public int getX() {
//        return x;
//    }
//
//    public int getY() {
//        return y;
//    }
//
//}
//
//class Sub extends Base {
//
//    private int z;
//
//    public Sub(int x, int y, int z) {
//        //write your code here
//        super(x, y);
//        this.z=z;
//    }
//
//    public int getZ() {
//        return z;
//    }
//
//    public int calculate() {
//        return super.getX() * super.getY() * this.getZ();
//    }
//
//}

//class Base{
//    public Base(String s){
//        System.out.print("B");
//    }
//}
//
//public class Derived extends Base{
//    public Derived (String s) {
//        super(s);
//        System.out.print("D");
//    }
//    public static void main(String[] args){
//        new Derived("C");
//    }
//}

class Shape {
    public void draw(){
        System.out.println("画画");
    }
}

class Rect extends Shape{
    @Override
    public void draw() {
        System.out.println("矩形");
    }
}

class Cycle extends Shape{
    @Override
    public void draw() {
        System.out.println("圆形");
    }
}

class Flower extends Shape{
    @Override
    public void draw() {
        System.out.println("❀");
    }
}


public class Derived {
    public static void drawmany(Shape shape){
        shape.draw();
    }
    public static void main(String[] args) {
        Cycle cycle = new Cycle();
        Rect rect = new Rect();
        Flower flower = new Flower();

        drawmany(cycle);
        drawmany(rect);
        drawmany(flower);
    }
}

